from flask import Flask
from settings.default import map_config
from flask_migrate import Migrate

'''
创建app的函数，参数代表运行的类型：开发环境、生产环境
'''
def create_app(run_type):
    #创建app
    app=Flask(__name__)

    #加载整个项目的配置
    app.config.from_object(map_config[run_type])

    #初始化SQLALchemy
    from comment.models import db
    db.init_app(app)

    #初始化redis的数据库连接
    from comment.utils.financial_Redis import fr
    fr.init_app(app)

    #初始化日志处理的工具
    from comment.utils.financial_logging import create_logger
    create_logger(app)

    #初始化migrate之后，可以执行命令
    # flask db init
    # flask db migrate
    # flask db upgrade
    # 直接执行上面3哥命令，需要默认的Flask项目入口文件（app.py）
    # 当前项目没有默认的flask项目入口文件，需要设置环境变量：
    Migrate(app,db)

    #注册token认证的请求钩子
    from comment.utils.request_auth import jwt_request_auth
    app.before_request(jwt_request_auth)    #每一次请求之前都会做token的认证

    #注册蓝图
    from financial.resource.user import user_bp
    from financial.resource.letter import letter_bp
    from financial.resource.card import card_bp
    app.register_blueprint(user_bp)
    app.register_blueprint(letter_bp)
    app.register_blueprint(card_bp)

    return app




